<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 深拷贝和浅拷贝的区别
        // 1.浅拷贝：只复制对象的第一层属性，如果属性值是对象的话，复制的是地址，如果修改了原对象中的对象属性，拷贝对象中的对象属性也会随之改变
        // 2.深拷贝：复制对象的所有属性，包括嵌套对象，修改原对象中的对象属性，拷贝对象中的对象属性不会随之改变
        // 浅拷贝
        function shallowCopy(obj) {
            if (!obj || typeof obj !== 'object') return;
            var newObj = obj.constructor === Array ? [] : {};
            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {
                    newObj[key] = obj[key];
                }
            }
            return newObj;
        }
        // 深拷贝
        function deepCopy(obj) {
            if (!obj || typeof obj !== 'object') return;
            var newObj = obj.constructor === Array ? [] : {};
            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {
                    newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
                }
            }
            return newObj;
        }
    </script>
</body>
</html>